/*************************************************
  * 描述：颜色选取器私有实现类
  *
  * File：cxicolorpicker_p.h
  * Author：dongyao@mozihealthcare.cn
  * Date：2025/9/26
  * Update：
  * ************************************************/

#ifndef CXICOLORPICKER_P_H
#define CXICOLORPICKER_P_H
#include <QColorDialog>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <controls/colorpicker/cxicolorpicker.h>
class CxiColorPickerPrivate : public QObject
{
	Q_OBJECT
	Q_DISABLE_COPY(CxiColorPickerPrivate)
	Q_DECLARE_PUBLIC(CxiColorPicker)
public:
	explicit CxiColorPickerPrivate(CxiColorPicker* p);
	~CxiColorPickerPrivate() override;

private:
	void init();
	void initControls();
	/**
     * @brief 更新颜色文本
     * @param color
     */
	void updateColorText(QColor color);
	/**
     * @brief 更新颜色块预览
     * @param color
     */
	void updateColorLabel(const QColor& color);
	/**
     * @brief 颜色选择对话框选择颜色时调用
     * @param color
     */
	void onColorSelected(const QColor& color);
	/**
     * @brief 显示颜色选择对话框
     */
	void showColorDialog();
	/**
     * @brief setColor 设置当前颜色 通过rgb值设置
     * @param r 红色分量
     * @param g 绿色分量
     * @param b 蓝色分量
     */
	void setColorFromRgb(int r, int g, int b);
	/**
     * @brief setColor 获取当前选中颜色
     * @param color 颜色字符串
     * @return
     */
	bool setColorFromString(QString color);
	CxiColorPicker* q_ptr;

	QHBoxLayout* m_mainLayout;// 主布局
	QLabel* m_colorLabel;     // 颜色块预览标签
	QLabel* m_colorText;      // 颜色文本显示
	QLabel* m_dropLabel;      // 下拉按钮
	CxiColorPicker::DisplayType m_displayType;
	QColor m_currentColor;      // 当前选中的颜色
	QColorDialog* m_colordialog;// 颜色选择对话框
};


#endif//CXICOLORPICKER_P_H
